DLL v theardu a uvolneni objektu.
Otázka od: koukal@petrkoukal.cz
28. 7. 2004 8:43
Dobry den.
V theardu bezicim na pozadi (je startovan ze sluzby TService) - theard provede
zavedeni dll knihovny, tato tvori vykoony kod theardu - v ni volam dalsi dll
knihovnu pro rizeni mericich karet nidaq32.dll.
Volani loadlirary obcas selze na chybu 1114 (ERROR_DLL_INIT_FAILED). Stane se
to v priipade, ze jiz nejaky dalsi theard uspesne provedl zavedeni dll
knihovny .
Pri volanii freelibrary obcas skonci s chybou 2 (ERROR_FILE_NOT_FOUND) - po
uspesnem provedeni Loadlibrary..
Jaky mechanizmus prace s dll knihovnami pri paralelnim chodu vice theardu je
mozno pouzit ?
(Getmodulehandle .. Freelibrary nebo Loadlibrary ..Ffreelibrary ).
Muze byt problem i pri uvolneni pameti po free objektu viz. dale.
Dll v theardu inicializuje a posleze uvolnuje objekt, potrebuji zjistit zda
byl spravne uvolnen t (v dosu to byly dve promenne MemAvail a MaxAvail,
jejichz hodnota musela byt pred a po uvolneni objektu shodna).
Existuje v delphi mechanzmus pomoci ktereho je toto mozno zjistit ?
Pouzit v theardu pro uvolnani objetku .free nebo . release ?
Petr Koukal.
Odpovedá: Petr Vones
29. 7. 2004 11:52
From: <koukal@petrkoukal.cz>
> Volani loadlirary obcas selze na chybu 1114 (ERROR_DLL_INIT_FAILED). Stane
> se to v priipade, ze jiz nejaky dalsi theard uspesne provedl zavedeni dll
> knihovny .
Mas od te DLL zdrojak ? Vypada to ze chyba je nekde v ni.
> Jaky mechanizmus prace s dll knihovnami pri paralelnim chodu vice theardu
> je mozno pouzit ?
Stejny jako jinde.
> Pouzit v theardu pro uvolnani objetku .free nebo . release ?
Samozrejme Free.
Petr Vones